﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//int main()
//{
//	char a = 128;
//	printf("%u\n",a);
//	return 0;
//}

//int main()
//{
//	char a = -128;
//	printf("%u\n",a);
//	return 0;
//}

//int main()//计算数据范围的一个小程序
//{
//	char a[1000];
//	int i;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//	}
//	printf("%zd", strlen(a));// 统计的是斜杠0之前字符个数；
//	return 0;
//}
//
//int main()
//{
//	int a[4] = { 1,2,3,4 };
//
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2= (int*)((int)a + 1);
//	printf("%x %x", ptr1[-1],*ptr2);// 以16进制的形式打印；
//	return 0;
//}

//int main()
//{
//	int n = 9;
//	float* pFloat = (float*)&n;
//	printf("n的值为：%d\n", n);
//	printf("*pFloat的值为：%f\n", *pFloat);
//	*pFloat = 9.0;
//	printf("n的值为：%d\n", n);
//	printf("*pFloat的值为：%f\n", *pFloat);
//	return 0;
//}

//struct Stu
//{
//	char name[20];//名字
//	int age;//年龄
//	char sex[5];//性别
//	char id[20];//学号
//};
//
//int main()
//{
//	//按照结构体成员的顺序初始化
//	struct Stu s = { "张三", 20, "男", "20230818001" };
//	printf("name: %s\n", s.name);
//	printf("age : %d\n", s.age);
//	printf("sex : %s\n", s.sex);
//	printf("id : %s\n", s.id);
//	//按照指定的顺序初始化
//	struct Stu s2 = { .age = 18, .name = "lisi", .id = "20230818002", .sex ="⼥" };
//	printf("name: %s\n", s2.name);
//	printf("age : %d\n", s2.age);
//	printf("sex : %s\n", s2.sex);
//	printf("id : %s\n", s2.id);
//	return 0;
//}

// // 最好不要用匿名结构体，进了解；
//struct
//{
//	int a;
//	char b;
//	float c;
//}s1;
//
//struct
//{
//	int a;
//	char b;
//	float c;
//}a[20],*p;
//
//int main()
//{
//	return 0;
//}

// // 结构体自引用；----链表的一种实现形式；

//typedef struct Node
//{
//	int data;
//	struct Node* next;
//}Node;
//
//int main()
//{
//	printf("%d", sizeof(struct Node));
//	Node n;
//	return 0;
//}

#include <stddef.h>

struct S1
{
	char c1;//1
	char c2;//1
	int n;//4
};

struct S2
{
	char c1;//1
	int n;//4
	char c2;//1
};

int main()
{
	//struct S2 s2;
	printf("%d\n", offsetof(struct S2, c1));
	printf("%d\n", offsetof(struct S2, n));
	printf("%d\n", offsetof(struct S2, c2));

	//printf("%zd\n", sizeof(struct S1));//?
	//printf("%zd\n", sizeof(struct S2));//?

	return 0;
}
